/**
 * @file main.c
 * @author your name (you@domain.com)
 * @brief
 * @version 0.1
 * @date 2023-08-22
 *
 * @copyright Copyright (c) 2023
 *
 */

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// #include <FreeRTOS.h>
// #include <task.h>
#include "board.h"
#include "log.h"
#include "bflb_gpio.h"

#define DBG_TAG          "MAIN"

#define USB_LIGHT_OUTPUT GPIO_PIN_33
#define RE_INPUT         GPIO_PIN_0
#define TIP_LIGHT_OUTPUT GPIO_PIN_12

struct bflb_device_s *gpio;

/**
 * @brief
 * 闪烁LED灯，逻辑封装
 */
void blink(struct bflb_device_s *device, int gpio)
{
    bflb_gpio_set(device, gpio);
    bflb_mtimer_delay_ms(500);
    bflb_gpio_reset(device, gpio);
    bflb_mtimer_delay_ms(500);
}

int main(void)
{
    // 初始化
    board_init();
    gpio = bflb_device_get_by_name("gpio");
    bflb_gpio_init(gpio, USB_LIGHT_OUTPUT, GPIO_OUTPUT);
    bflb_gpio_init(gpio, RE_INPUT, GPIO_INPUT);
    bflb_gpio_init(gpio, TIP_LIGHT_OUTPUT, GPIO_OUTPUT);

    while (true) {
        // 读取雷达检测状态
        if (bflb_gpio_read(gpio, RE_INPUT)) {
            // 闪烁，提示检测到人体
            blink(gpio, TIP_LIGHT_OUTPUT);
            // 亮灯
            bflb_gpio_set(gpio, USB_LIGHT_OUTPUT);
        } else {
            // 熄灯
            bflb_gpio_reset(gpio, USB_LIGHT_OUTPUT);
        }
    }
}